/**
 * 首页数据状态管理，高德地图接口
 */
import utils  from '../uview-ui/index.js'
import api from '../api/index.js'
const module = {
  namespaced: true,
  state:()=>({
	baselist:[],
    list:[],//首页加载列表数据
	page:1,
	loadStatus:'loadmore',
  }),
  mutations: {
	refreshList(state){
		console.log("refreshList")
		state.list = [];
		state.page = 1;
	},
    // getList(state,data) {
	// 	if(data && data.length){
	// 		data.forEach((item,index)=>{
	// 			if(item.photos.length){
	// 				item.cover = item.photos[0].url;
	// 			}else{
	// 				item.cover = `https://picsum.photos/300?random=${index}`;
	// 			}
	// 			item.type = item.type.split(";");
	// 		})
	// 		state.list = [...state.list,...data];
	// 	}
	// 	console.log("state.list",state);
	// 	// 这里的 `state` 对象是模块的局部状态
    // }
	  getList(state, data) {
		  // 1. 空数据降级
		  if (!data || !data.baselist?.length) {
			  state.loadStatus = "NoMore";
			  return;
		  }

		  // 2. 处理每个景点项的封面和类型
		  data.baselist.forEach((item, index) => {
			  // 封面图：优先取photos[0]，否则用默认图
			  item.cover = item.photos?.length ? item.photos[0].url : `https://picsum.photos/300?random=${index}`;
			  // 类型：分割为数组
			  item.type = item.type?.split(",") || [];
		  });

		  // 3. 赋值到state（根据场景选择覆盖/追加）
		  if (state.page === 1) {
			  // 下拉刷新：覆盖原有列表
			  state.list = data.baselist;
		  } else {
			  // 上拉加载：追加列表
			  state.list = [...state.list, ...data.baselist];
		  }

		  // 4. 同步页码
		  state.page = data.page || 1;
		  // 5. 重置加载状态
		  state.loadStatus = "LoadMore";
	  }
  },
  actions:{
	  // state为当前模块的数据，commit触发mutation方法，rootState是根节点状态，info是传参
	getList({state,commit,rootState},city){
		state.loadStatus = 'loading';
		// 优先使用传入的city，然后是缓存的城市，最后是默认城市北京
		const targetCity = city || uni.getStorageSync('city') || '北京';
		console.log("获取城市列表：", targetCity);
		
		// 优先使用后端接口
		api.loadByCity({
			city: targetCity,
			page: state.page,
			pageSize: 10
		}).then(res=>{
			console.log("loadByCity结果：", res);
			if(res.data && res.data.code === 200){
				const scenicList = res.data.data || [];
				// 转换数据格式，适配前端显示
				const formattedList = scenicList.map(item => ({
					id: item.id,
					name: item.title,
					address: item.address || (item.province + item.city + item.district),
					cover: item.href || `https://picsum.photos/300?random=${item.id}`,
					type: item.type ? item.type.split(',') : [],
					price: item.price,
					rate: item.rate,
					photos: item.href ? [{url: item.href}] : []
				}));
				state.page++;
				commit('getList', formattedList);
				// 保存当前城市到缓存
				uni.setStorageSync('city', targetCity);
			} else {
				// 如果后端接口失败，使用高德地图API作为备选
				api.keywordSearch({
					city: targetCity,
					page: state.page,
					keywords: '景点',
				}).then(res=>{
					console.log("keywordSearch结果：", res);
					if(res.data && res.data.status == 1){
						state.page++;
						commit('getList', res.data.pois || []);
						uni.setStorageSync('city', targetCity);
					}
				}).catch(err => {
					console.error("获取城市列表失败：", err);
				});
			}
		}).catch(err => {
			console.error("获取城市列表失败，使用高德API：", err);
			// 如果后端接口失败，使用高德地图API作为备选
			api.keywordSearch({
				city: targetCity,
				page: state.page,
				keywords: '景点',
			}).then(res=>{
				if(res.data && res.data.status == 1){
					state.page++;
					commit('getList', res.data.pois || []);
					uni.setStorageSync('city', targetCity);
				}
			}).catch(err2 => {
				console.error("高德API也失败：", err2);
			});
		}).finally(() => {
			state.loadStatus = 'loadmore';
		})
	},
	refreshList({state,commit,rootState},city){
		commit('refreshList');
		state.loadStatus = 'loading';
		// 优先使用传入的city，然后是缓存的城市，最后是默认城市北京
		const targetCity = city || uni.getStorageSync('city') || '北京';
		console.log("刷新城市列表：", targetCity);
		
		// 优先使用后端接口
		api.loadByCity({
			city: targetCity,
			page: 1,
			pageSize: 10
		}).then(res=>{
			console.log("loadByCity刷新结果：", res);
			if(res.data && res.data.code === 200){
				const scenicList = res.data.data || [];
				// 转换数据格式，适配前端显示
				const formattedList = scenicList.map(item => ({
					id: item.id,
					name: item.title,
					address: item.address || (item.province + item.city + item.district),
					cover: item.href || `https://picsum.photos/300?random=${item.id}`,
					type: item.type ? item.type.split(',') : [],
					price: item.price,
					rate: item.rate,
					photos: item.href ? [{url: item.href}] : []
				}));
				state.page = 2;
				commit('getList', formattedList);
				// 保存当前城市到缓存
				uni.setStorageSync('city', targetCity);
			} else {
				// 如果后端接口失败，使用高德地图API作为备选
				api.keywordSearch({
					city: targetCity,
					page: 1,
					keywords: '景点',
				}).then(res=>{
					if(res.data && res.data.status == 1){
						state.page = 2;
						commit('getList', res.data.pois || []);
						uni.setStorageSync('city', targetCity);
					}
				}).catch(err => {
					console.error("刷新城市列表失败：", err);
				});
			}
		}).catch(err => {
			console.error("刷新城市列表失败，使用高德API：", err);
			// 如果后端接口失败，使用高德地图API作为备选
			api.keywordSearch({
				city: targetCity,
				page: 1,
				keywords: '景点',
			}).then(res=>{
				if(res.data && res.data.status == 1){
					state.page = 2;
					commit('getList', res.data.pois || []);
					uni.setStorageSync('city', targetCity);
				}
			}).catch(err2 => {
				console.error("高德API也失败：", err2);
			});
		}).finally(() => {
			state.loadStatus = 'loadmore';
		})
	}
  },
  getters: {
    getloadStatus(state){
      return state.loadStatus;
    },
	getList(state){
	  return state.list
	}
  }
}
export default module